// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import BaseClass from '@api/sighting/model/SightingDeviceDto'
import DeviceClass from '@api/sighting/model/DeviceDto'
import DiskClass from '@api/sighting/model/SightingDiskDataDto'
import API from './API'

const WORD = '设备'

const INIT_LINK = 2

const RANGE = { beginHour: '00', beginMinute: '00', endHour: '23', endMinute: '59' }
const SETTING_LIST = Array(7).fill().map((_, i) => ({ day: `${(i + 1) % 7}`, ...RANGE })) // 星期日为 '0'

// ============================== 导出状态集 ============================== //

export default {
  // —————————————————————————————— 常量状态 —————————————————————————————— //

  /**
   * 接口
   */
  API: {
    MENU: ['__详情__', WORD], // 菜单
    ...API,
  },

  /**
   * 映射
   */
  MAP: {
    WORD, // 词语
    SUBMIT: '截图', // 提交
    EDIT: '保存', // 修改
    DEL: '重启', // 重启
    PASS: '开屏', // 通过
    REJ: '关屏', // 拒绝

    // 必须的字段，有值才会显示弹窗
    REQUIRED_KEY: 'id',

    // 弹窗属性
    MODEL_PROPS: {
      title: `${WORD}详情`,
      bgClose: true,
      large: true,
    },
  },

  /**
   * 字典
   */
  DICT: {
    /**
     * 类型
     */
    TYPE: [
      ['1', '主任务'],
      ['2', '插播任务'],
      ['4', '垫片'],
    ],

    /**
     * 属性
     */
    PROP: [
      ['1', '多媒体'],
      ['2', '视频点播'],
      ['3', '科间会诊'],
    ],
  },

  /**
   * 首要开关
   *
   * 1. 初始化完成时调用
   * 2. 提交后刷新时调用
   */
  MAIN_START: 'startOne', // 'startInfo' 或 'startList' 或 'startOne' 或 ''

  /**
   * 初始配置
   */
  INIT_CONFIG: {
    /**
     * 删除后后是否保持 ID 不变
     *
     * true  保持 ID 不变
     * false 设置 ID = ''
     */
    DEL_KEEP_ID: true,
  },

  /**
   * 初始单项
   *
   * 1. 初始存在，才能响应
   * 2. setOne() 合并时使用
   * 3. openAdd() 新增时使用
   */
  INIT_ONE: CORE.initObj(BaseClass, {
    deviceDto: CORE.initObj(DeviceClass),
    diskDataDto: [CORE.initObj(DiskClass)],
    linkAll: INIT_LINK, // 是否全部联动
    link1: INIT_LINK, // 星期一联动 (编号为 '1')
    link2: INIT_LINK, // 星期二联动
    link3: INIT_LINK, // 星期三联动
    link4: INIT_LINK, // 星期四联动
    link5: INIT_LINK, // 星期五联动
    link6: INIT_LINK, // 星期六联动
    link0: INIT_LINK, // 星期日联动 (编号为 '0')
    volumeList: SETTING_LIST.map((item) => ({ ...item, volumevalue: '0' })),
    screenList: [...SETTING_LIST],
    powerList: [...SETTING_LIST],
  }),
}
